package com.example.design.leetcode.arrayAndString;

//剑指 Offer 61. 扑克牌中的顺子

//从若干副扑克牌中随机抽 5 张牌，判断是不是一个顺子，即这5张牌是不是连续的。2～10为数字本身，A为1，J为11，Q为12，K为13，而大、小王为 0 ，可以看成任意数字。A 不能视为 14。
//
//    示例1:
//    输入: [1,2,3,4,5]
//    输出: True
//
//    示例2:
//    输入: [0,0,1,2,5]
//    输出: True
//
//    限制：
//    数组长度为 5
//    数组的数取值为 [0, 13]

//标签：数组

//算法流程
//        顺子牌的定义
//        牌数量为 5
//        牌间的顺序为递增
//        牌间不可以有重复数据，（大小王除外）
//        由于牌数量为 5，所以 maxVal-minVal <= 5

import java.util.Arrays;

public class Practice15 {

    public static boolean isStraight(int[] nums) {
        int length = nums.length;

        // 牌数量5
        if (length != 5) {
            return false;
        }

        // 排序
        Arrays.sort(nums);

        int count = 0;
        for(int i = 0; i < nums.length; i++) {
            // 大小王
            if (nums[i] == 0) {
                count++;
                continue;
            }

            // 不可以有重复，大小王除外
            if (i != nums.length-1 && nums[i] == nums[i+1]) {
                return false;
            }
        }

        // 最大值 -最小值要小于5
        return nums[nums.length -1] - nums[count] < 5;
    }


    public static void main(String[] args) {
        int[] nums = new int[]{0,0,1,2,5};

        System.out.println(isStraight(nums));
    }
}
